#include<bits/stdc++.h>
using namespace std;
struct car{
    int di,vi,ai;
}a[100005];
int p[100005];
int main(){
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    int t;
    scanf("%d",&t);
    while(t--){
        int n,m,l,v;
        scanf("%d%d%d%d",&n,&m,&l,&v);
        for(int i=1;i<=n;i++){
            int di1,vi1,ai1;
            scanf("%d%d%d",&di1,&vi1,&ai1);
            a[i]={di1,vi1,ai1};
        }
        for(int i=1;i<=m;i++){
            scanf("%d",&p[i]);
        }
        sort(p+1,p+m+1);
        long long cnt=0;
        for(int i=1;i<=n;i++){
            if(a[i].vi>v&&a[i].di<=p[m]){
                cnt++;
            }
        }
        if(cnt==0) m++;
        printf("%lld %d\n",cnt,m-1);
    }
    return 0;
}
